关于卡尔曼滤波
大多数现代系统都搭载上数量众多的传感器,它们通过传感器返回的一系列测量数据来估算一些有用的信息。例如,我们生活上的GPS接收器就是提供位置和速度的装置,它估算的位置和速度就是我们需要的有用数据,而不同时刻的卫星数据就是一系列的测量数据。
对于一个跟踪和控制系统来说,其中最大的问题就是在存在不确定性的前提下提供一个准确的有用信息。回到刚刚的例子,GPS接收器测量的卫星数据充满不确定性,这些不确定性往往取决于外部环境的变化,其中包括热噪声,大气层影响,卫星位置的轻微改变,GPS的内部时钟准确性等等。
而卡尔曼滤波就是众多常用且重要的估算算法。因为卡尔曼滤波器在进行预估时是默认假设输入数据是不准确的。与此同时,卡尔曼滤波是根据上一次系统的预估值来预估下一次系统的状态。
这种类型的滤波器是卡尔曼首次公开发表的,因此被命名为卡尔曼滤波器。在1960年,卡尔曼发布了一篇描述离散数据线性滤波问题的递归解的问题的论文。
现在,卡尔曼滤波器常常用于雷达跟踪系统,位置和导航系统,控制系统,计算机图形等等领域。
一个预测例子
在介绍卡尔曼滤波之前,让我们先来了解一下预测算法。
我们用一个雷达跟踪系统作为例子。
雷达跟踪系统向目标方向发射一个笔尖型射束用于追踪目标。假设发射周期为5S,因此,雷达系统会在每5秒的时间后通过向目标方向发射专用的跟踪射束来定位目标。
在发射射束之后,雷达系统会估算当前目标的位置和速度。与此同时,雷达系统也会预测下一个发射束应该发送到哪一个位置。
通过牛顿运动方程,我们能很容易计算出目标在下一个发射周期的位置。
将上诉公式映射到三维空间,我们可以将牛顿运动方程作为系统的方程:
这些目标参数 [x,y,z,vx,vy,vz,ax,ay,az][x,y,z,vx,vy,vz,ax,ay,az] 被称为 系统状态. 通过当前系统状态代入到系统方程中,我们可以得到目标的下一个系统状态。
上面的方程被称为 动态模型 (或者空间状态模型). 动态模型是一种描述输入和输出关系的方法。
回到我们的例子,我们知道当我们有了当前系统状态和掌握系统的动态模型之后,我们就能很容易地预测出目标的下一个状态。
然而并不是这样的。首先,雷达系统的测量数值不是完全可靠,它包含随机误差(或者这类型的不确定性)。这些随机错误的大小取决于很多因素,例如雷达自身的准确性,发射光束的宽度,返回信号强弱等等。这些测量误差被称为测量噪声。
此外, 因为有很多外部因素会做成干扰,目标运动并不是完全按着运动方程。例如:风向,空气流动,驾驶策略等等。这个动态模型误差被称为 处理噪声。
因为测量噪声和处理噪声的存在,这个根据上诉系统方程估算出来的目标位置会真实的目标位置相差很大。假若这样,雷达系统会向错误的方向发射跟踪射束并且丢失目标。
为了提高雷达跟踪系统的表现,这就需要能够将处理噪声和测量噪声考虑进来的预测算法。
对于此类算法,应用得最广泛无疑是卡尔曼滤波. (处理模型中的噪声)